// index.js
Page({

  data: {
    cityname: '未选择', // 用于保存当前城市名
    cid: 1,     // 用于描述当前选中的电影类别id
    movies: []  // 用于描述当前电影列表
  },

  /** 点击顶部导航后执行 */
  tapNav(event){
    let id = event.target.dataset.id // 当前选中组件的data-id
    this.setData({cid: id})
    // 从缓存中读取相应id的首页数据
    wx.getStorage({
      key: id,
      success: (res)=>{
        console.log(res)
        this.setData({
          movies: res.data
        })
      },
      fail: (err)=>{
        console.warn(err)
        // 发请求加载选中类别下的首页数据，更新电影列表
        this.loadData(id, 0).then(movies=>{
          this.setData({movies})
          // 将movies存入缓存
          wx.setStorage({
            key: id,
            data: movies
          })
        })
      }
    })
  },

  /**
   * 根据传递的参数，查询电影列表。
   * 返回 Promise。 携带查询到的电影数组
   * @param {number} cid       电影类别ID
   * @param {number} offset    读取条目的起始下标
   */
  loadData(cid, offset){
    return new Promise((resolve, reject)=>{
      // 弹出等待框
      wx.showLoading({
        title: '加载中...',
        mask: true  
      })
      // 发请求
      wx.request({
        url: 'https://api.tedu.cn/index.php',
        method: 'GET',
        data: {cid, offset},
        success: (res)=>{ resolve(res.data) },
        fail: (err)=>{ reject(err) },
        complete: (com)=>{
          wx.hideLoading() // 隐藏弹出框
        }
      })
    })
  },

  /** 加载当前定位 */
  getLocation(){
    let qqmapsdk = getApp().globalData.qqmapsdk
    qqmapsdk.reverseGeocoder({
      success: (res)=>{
        let city = res.result.address_component.city
        console.log(city, res)
        this.setData({cityname: city})
        // 将城市名称，存入globalData
        getApp().globalData.cityname = city
      }
    })
  },

  /** 页面加载完毕后执行 */
  onLoad(){
    // 加载当前位置
    this.getLocation()

    // 加载首页电影列表
    this.loadData(1, 0).then(movielist=>{
      this.setData({movies: movielist})
    }).catch(err=>{
      console.warn(err)
    })
  },

  onShow(){
    let cityname = getApp().globalData.cityname
    this.setData({cityname})
  },

  /** 监听触底事件 */
  onReachBottom(){
    console.log('到底了...')
    // 发送请求，加载下一页
    let cid =  this.data.cid // 当前类别ID
    let offset = this.data.movies.length // 起始位置
    // 发请求
    this.loadData(cid, offset).then(movielist=>{
      this.data.movies.push(...movielist)
      this.setData({movies: this.data.movies})
    })
  },

  /** 监听下拉刷新事件 */
  onPullDownRefresh(){
    console.log('下拉刷新...')
    // 加载当前类别下的首页电影列表 更新列表 更新缓存
    this.loadData(this.data.cid, 0).then(movies=>{
      // 更新列表
      this.setData({movies})
      // 更新缓存
      wx.setStorage({
        key: this.data.cid+"",
        data: movies
      })
      wx.stopPullDownRefresh()
    })
  }

})


